//package com.dkx.springbootwebsocket.controller;
//
//import com.dkx.springbootwebsocket.service.RedisCleanupService;
//import com.dkx.springbootwebsocket.service.WebSocketMessageService;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.HttpStatus;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.*;
//
//// AdminController.java
//@RestController
//@RequestMapping("/api/admin")
//@CrossOrigin(origins = "*")
//@Slf4j
//public class AdminController {
//
//    @Autowired
//    private RedisCleanupService redisCleanupService;
//
//    @Autowired
//    private WebSocketMessageService messageService;
//
//    @PostMapping("/cleanup")
//    public ResponseEntity<Map<String, Object>> cleanupRedis() {
//        Map<String, Object> result = new HashMap<>();
//        try {
//            redisCleanupService.cleanupWebSocketData();
//            result.put("success", true);
//            result.put("message", "Redis数据清理完成");
//            return ResponseEntity.ok(result);
//        } catch (Exception e) {
//            log.error("清理Redis数据失败", e);
//            result.put("success", false);
//            result.put("message", "清理失败: " + e.getMessage());
//            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
//        }
//    }
//
//    @PostMapping("/fix-keys")
//    public ResponseEntity<Map<String, Object>> fixRedisKeys() {
//        Map<String, Object> result = new HashMap<>();
//        try {
//            redisCleanupService.checkAndFixRedisKeys();
//            result.put("success", true);
//            result.put("message", "Redis键修复完成");
//            return ResponseEntity.ok(result);
//        } catch (Exception e) {
//            log.error("修复Redis键失败", e);
//            result.put("success", false);
//            result.put("message", "修复失败: " + e.getMessage());
//            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
//        }
//    }
//
//    @GetMapping("/redis-status")
//    public ResponseEntity<Map<String, Object>> getRedisStatus() {
//        Map<String, Object> result = new HashMap<>();
//        try {
//            // 获取用户会话键
//            Set<String> sessionKeys = messageService.getRedisTemplate().keys("user:session:*");
//            List<Map<String, Object>> sessionStatus = new ArrayList<>();
//            if (sessionKeys != null) {
//                for (String key : sessionKeys) {
//                    Map<String, Object> keyInfo = new HashMap<>();
//                    keyInfo.put("key", key);
//                    keyInfo.put("type", messageService.getRedisTemplate().type(key));
//                    keyInfo.put("value", messageService.getRedisTemplate().opsForValue().get(key));
//                    sessionStatus.add(keyInfo);
//                }
//            }
//
//            // 获取离线消息键
//            Set<String> offlineKeys = messageService.getRedisTemplate().keys("offline:msg:*");
//            List<Map<String, Object>> offlineStatus = new ArrayList<>();
//            if (offlineKeys != null) {
//                for (String key : offlineKeys) {
//                    Map<String, Object> keyInfo = new HashMap<>();
//                    keyInfo.put("key", key);
//                    keyInfo.put("type", messageService.getRedisTemplate().type(key));
//                    keyInfo.put("size", messageService.getRedisTemplate().opsForList().size(key));
//                    offlineStatus.add(keyInfo);
//                }
//            }
//
//            result.put("sessionKeys", sessionStatus);
//            result.put("offlineKeys", offlineStatus);
//            result.put("success", true);
//            return ResponseEntity.ok(result);
//        } catch (Exception e) {
//            log.error("获取Redis状态失败", e);
//            result.put("success", false);
//            result.put("message", "获取状态失败: " + e.getMessage());
//            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
//        }
//    }
//}